// 移除k个数字 402
// 比较最左 是否最大 大就要删除
// var removeKdigists = function (num, k) {
//     let stack = [];
//     if (num.length == k) return "0";
//     for (let val of num) {
//         while (k && stack.length && stack[stack.length - 1] > val) {
//             stack.pop();
//             k--;
//         }
//         stack.push(val)
//     }
//     let res = stack.join("");
//     if (res == 0) return "0";
//     while (stack[0] == 0) {
//         stack.shift()
//     }
//     return stack.join("").substring(0, stack.length - k);
// }

// 移除k位变为最小数字
function removeK(num, k) {
    let stack = [];
    if (num.length == k) return "0";
    for (let val of num) {
        // 每一次循环都去看下
        // 主要是位置不能替换
        // stack[stack.length-1] 最后一位永远是小于val的前一位 如果不是因为位置靠前必须删除
        while (k && stack.length && stack[stack.length - 1] > val) {
            stack.pop() // 删除最后一个
            k--
        }
        stack.push(val)
    }
    let res = stack.join("");
    if (res == 0) return '0';
    while (stack[0] == 0) {
        stack.shift() // 如果出现 ‘001’
    }
    return stack.join("")
    // .substring(0, stack.length - k)
}




// 示例 1 ：

// 输入：num = "1432219", k = 3
// 输出："1219"
// 解释：移除掉三个数字 4, 3, 和 2 形成一个新的最小的数字 1219 。
// 示例 2 ：
console.log(removeK("1432219", 3))
// 输入：num = "10200", k = 1
// 输出："200"
// 解释：移掉首位的 1 剩下的数字为 200. 注意输出不能有任何前导零。
// 示例 3 ：
console.log(removeK("10200", 1))

// 输入：num = "10", k = 2
// 输出："0"
// 解释：从原数字移除所有的数字，剩余为空就是 0 。
console.log(removeK("10", 2))
// 来源：力扣（LeetCode）
// 链接：https://leetcode-cn.com/problems/remove-k-digits
// 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。